package com.weijian.config.ai;

import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.ai.openai.api.OpenAiApi;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

@Configuration
public class CodingPlanConfig {

    @Value("${glm.coding-plan-key}")
    private String apiKey;

    /** 只用于 AI 的自定义 Options，每次都带 Cline UA */
    private OpenAiChatOptions codingPlanOptions() {
        return OpenAiChatOptions.builder()
                .model("glm-4.6")
                .temperature(0.7)
                .httpHeaders(Map.of("User-Agent", "Cline/3.0.0 (Node.js 20.12.2)"))
                .build();
    }

    @Bean("codeModel")
    public OpenAiChatModel codingPlanChatModel() {
        // 1. 创建 OpenAiApi（用官方提供的 builder，不再自己塞 RestTemplate）
        OpenAiApi openAiApi = OpenAiApi.builder()
                .baseUrl("https://open.bigmodel.cn/api/coding/paas/v4").completionsPath("/chat/completions")
                .apiKey(apiKey)
                .build();
        // 2. 创建 OpenAiChatModel，把带 UA 的 options 作为 default
        return OpenAiChatModel.builder()
                .openAiApi(openAiApi)
                .defaultOptions(codingPlanOptions())
                .build();
    }
}
